小编典典

如何从 Git 存储库的提交历史记录中删除/删除大文件?

all

我不小心把一张 DVD 翻录到一个网站项目中,然后不小心git commit -a -m ...,然后,这个 repo 被 2.2 gigs
膨胀了。下次我进行了一些编辑,删除了视频文件,并提交了所有内容,但压缩文件仍然存在于存储库中,在历史记录中。

我知道我可以从这些提交开始分支并将一个分支重新定位到另一个分支。但是我应该怎么做才能合并 2
个提交,以便大文件不会显示在历史记录中并在垃圾收集过程中被清理?


阅读 220

收藏
2022-03-01

共1个答案

小编典典

为什么不使用这个简单而强大的命令呢?

git filter-branch --tree-filter 'rm -f DVD-rip' HEAD

--tree-filter选项在每次签出项目后运行指定的命令,然后重新提交结果。在这种情况下,您从每个快照中删除一个名为 DVD-rip
的文件,无论它是否存在。

如果您知道哪个提交引入了大文件(例如 35dsa2),则可以将 HEAD 替换为 35dsa2..HEAD
以避免重写太多历史记录,从而避免在尚未推送时出现分歧提交。@alpha_989 的这条评论似乎太重要了,不能在这里省略。

请参阅此链接

2022-03-01